<classes>
  <class name="CodeTemplateLibrary" assembly="FireStarterModeller.BO" displayName="Code Template Library">
    <property name="CodeTemplateLibraryID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="CodeTemplateLibraryName" compulsory="true" />
    <primaryKey>
      <prop name="CodeTemplateLibraryID" />
    </primaryKey>
    <relationship name="GenerationSettings" type="multiple" relatedClass="GenerationSettings" reverseRelationship="CodeTemplateLibrary" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="CodeTemplateLibraryID" relatedProperty="CodeTemplateLibraryID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Name" property="CodeTemplateLibraryName" />
      </grid>
      <form>
        <field label="Name:" property="CodeTemplateLibraryName" />
      </form>
    </ui>
  </class>
  <class name="DatabaseConnectionInfo" assembly="FireStarter.DB.Schema.BO" displayName="Database Connection Info">
    <property name="DatabaseConnectionID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Vendor" compulsory="true">
      <simpleLookupList>
        <item display="MySQL" value="MySql" />
        <item display="SQL Server" value="SqlServer" />
        <item display="Access" value="Access" />
      </simpleLookupList>
    </property>
    <property name="Server" />
    <property name="Port" />
    <property name="Database" />
    <property name="UserName" />
    <property name="Password" keepValuePrivate="true"/>
    <primaryKey>
      <prop name="DatabaseConnectionID" />
    </primaryKey>
    <relationship name="ReverseEngineeringsUsingThisConnection" type="multiple" relatedClass="ReverseEngineering" reverseRelationship="DatabaseConnectionInfo" relatedAssembly="FireStarter.DB.Schema.BO">
      <relatedProperty property="DatabaseConnectionID" relatedProperty="DatabaseConnectionID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Vendor" property="Vendor" />
        <column heading="Server" property="Server" />
        <column heading="Database" property="Database" />
        <column heading="User Name" property="UserName" />
      </grid>
      <form>
        <field label="Vendor:" property="Vendor" type="ComboBox" />
      </form>
    </ui>
    <ui name="RemoteDatabases">
      <grid>
        <column heading="Server" property="Server" />
        <column heading="Database" property="Database" />
        <column heading="User Name" property="UserName" />
      </grid>
      <form>
        <field label="Server:" property="Server" />
        <field label="Port:" property="Port" />
        <field label="Database:" property="Database" />
        <field label="User Name:" property="UserName" />
        <field label="Password:" property="Password" />
      </form>
    </ui>
    <ui name="FilebasedDatabases">
      <grid>
        <column heading="Database File" property="Database" />
      </grid>
      <form>
        <field label="Database File:" property="Database" type="FireStarterModeller.UI.Dialogs.OpenFileDialogExtendedTextBox" assembly="FireStarterModeller.UI" mapperType="FireStarterModeller.UI.Dialogs.OpenFileDialogExtendedTextBoxMapper" mapperAssembly="FireStarterModeller.UI" />
        <field label="User Name:" property="UserName" />
        <field label="Password:" property="Password" />
      </form>
    </ui>
  </class>
  <class name="DBViewColumn" assembly="FireStarter.DB.Schema.BO" displayName="View Column">
    <property name="ColumnID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ColumnName" compulsory="true" />
    <property name="DataType" compulsory="true" />
    <property name="DataLength" type="Int32" />
    <property name="Nullable" type="Boolean" default="true" compulsory="true" />
    <property name="DefaultValue" />
    <property name="ViewID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="IsAutoIncrementing" type="Boolean" default="false" />
    <property name="Comment" />
    <property name="OrdinalPosition" type="Int32" />
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <primaryKey>
      <prop name="ColumnID" />
    </primaryKey>
    <relationship name="View" type="single" relatedClass="DBView" reverseRelationship="Columns" relatedAssembly="Firestarter.DB.Schema.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="ViewID" relatedProperty="ViewID" />
    </relationship>
    <relationship name="MappedDMProperty" type="single" relatedClass="DMProperty" reverseRelationship="MappedDBViewColumn" relatedAssembly="FireStarterModeller.BO" deleteAction="DereferenceRelated" owningBOHasForeignKey="false">
      <relatedProperty property="ColumnID" relatedProperty="MappedDBColumnID" />
    </relationship>
  </class>
  <class name="DBColumn" assembly="FireStarter.DB.Schema.BO" displayName="DB Column">
    <property name="ColumnID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ColumnName" compulsory="true" />
    <property name="DataType" compulsory="true" />
    <property name="DataLength" type="Int32" />
    <property name="Nullable" type="Boolean" default="true" compulsory="true" />
    <property name="DefaultValue" />
    <property name="TableID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="IsAutoIncrementing" type="Boolean" default="false" />
    <property name="Comment" />
    <property name="OrdinalPosition" type="Int32" />
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <primaryKey>
      <prop name="ColumnID" />
    </primaryKey>
    <relationship name="ForeignKeyColumnsAsParentColumn" type="multiple" relatedClass="DBForeignKeyColumn" reverseRelationship="ParentColumn" relatedAssembly="Firestarter.DB.Schema.BO" deleteAction="DeleteRelated">
      <relatedProperty property="ColumnID" relatedProperty="ParentColumnID" />
    </relationship>
    <relationship name="ForeignKeyColumnsAsRelatedColumn" type="multiple" relatedClass="DBForeignKeyColumn" reverseRelationship="RelatedColumn" relatedAssembly="Firestarter.DB.Schema.BO" deleteAction="DeleteRelated">
      <relatedProperty property="ColumnID" relatedProperty="RelatedColumnID" />
    </relationship>
    <relationship name="KeyColumns" type="multiple" relatedClass="DBKeyColumn" reverseRelationship="Column" relatedAssembly="Firestarter.DB.Schema.BO" deleteAction="DeleteRelated">
      <relatedProperty property="ColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="MappedDMProperty" type="single" relatedClass="DMProperty" reverseRelationship="MappedDBColumn" relatedAssembly="FireStarterModeller.BO" deleteAction="DereferenceRelated" owningBOHasForeignKey="false">
      <relatedProperty property="ColumnID" relatedProperty="MappedDBColumnID" />
    </relationship>
    <relationship name="PrimaryKeyColumn" type="single" relatedClass="DBPrimaryKeyColumn" reverseRelationship="Column" relatedAssembly="Firestarter.DB.Schema.BO" deleteAction="DeleteRelated"  owningBOHasForeignKey="false">
      <relatedProperty property="ColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="Table" type="single" relatedClass="DBTable" reverseRelationship="Columns" relatedAssembly="Firestarter.DB.Schema.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Column Name" property="ColumnName" />
        <column heading="Data Type" property="DataType" />
        <column heading="Data Length" property="DataLength" />
        <column heading="Default Value" property="DefaultValue" />
        <column heading="Comment" property="Comment" />
        <column heading="Is Auto Incrementing" property="IsAutoIncrementing" />
        <column heading="Nullable" property="Nullable" />
        <column heading="Ordinal Position" property="OrdinalPosition" />
        <column heading="Pending Change Type" property="PendingChangeType" />
      </grid>
      <form>
        <field label="Column Name:" property="ColumnName" />
        <field label="Data Type:" property="DataType" />
        <field label="Data Length:" property="DataLength" />
        <field label="Nullable? *" property="Nullable" type="CheckBox" />
        <field label="Default Value:" property="DefaultValue" />
        <field label="Comment:" property="Comment" />
        <field label="Is Auto Incrementing?" property="IsAutoIncrementing" type="CheckBox" />
        <field label="Ordinal Position:" property="OrdinalPosition" />
        <field label="Pending Change Type:" property="PendingChangeType" />
      </form>
    </ui>
  </class>
  <class name="DBDatabase" assembly="FireStarter.DB.Schema.BO" displayName="DatabaseInfo">
    <property name="DatabaseID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="FSDatabaseID" />
    <property name="DatabaseName" compulsory="true">
      <rule name="Name">
        <add key="maxLength" value="255" />
        <add key="minLength" value="1" />
      </rule>
    </property>
    <property name="Catalog" />
    <property name="Schema" />
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <key name="AK1">
      <prop name="DatabaseName" />
    </key>
    <primaryKey>
      <prop name="DatabaseID" />
    </primaryKey>
    <relationship name="StoredByReverseEngineering" type="single" relatedClass="ReverseEngineering" reverseRelationship="StoredDatabase" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="DatabaseID" relatedProperty="StoredDatabaseID" />
    </relationship>
    <relationship name="Tables" type="multiple" relatedClass="DBTable" reverseRelationship="Database" relatedAssembly="Firestarter.DB.Schema.BO" relationshipType="Aggregation" orderBy="TableNameDB">
      <relatedProperty property="DatabaseID" relatedProperty="DatabaseID" />
    </relationship>
    <relationship name="Views" type="multiple" relatedClass="DBView" reverseRelationship="Database" relatedAssembly="Firestarter.DB.Schema.BO" relationshipType="Aggregation" orderBy="TableName">
      <relatedProperty property="DatabaseID" relatedProperty="DatabaseID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Database Name" property="DatabaseName" />
        <column heading="Catalog" property="Catalog" />
        <column heading="Schema" property="Schema" />
      </grid>
      <form>
        <field label="Database Name:" property="DatabaseName" />
        <field label="Catalog:" property="Catalog" />
        <field label="Schema:" property="Schema" />
      </form>
    </ui>
  </class>
  <class name="DBForeignKey" assembly="FireStarter.DB.Schema.BO" displayName="DB Foreign Key">
    <property name="ForeignKeyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ParentTableID" type="Guid" compulsory="true" >
      <businessObjectLookupList class="DBTable" assembly="FireStarter.DB.Schema.BO" />
    </property>
    <property name="RelatedTableID" type="Guid">
      <businessObjectLookupList class="DBTable" assembly="FireStarter.DB.Schema.BO" />
    </property>
    <property name="ForeignKeyName" />
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <primaryKey>
      <prop name="ForeignKeyID" />
    </primaryKey>
    <relationship name="ForeignKeyColumns" type="multiple" relatedClass="DBForeignKeyColumn" reverseRelationship="ForeignKey" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="ForeignKeyID" relatedProperty="ForeignKeyID" />
    </relationship>
    <relationship name="MappedDMRelationship" type="single" relatedClass="DMRelationship" reverseRelationship="MappedDBForeignKey" relatedAssembly="FireStarterModeller.BO" deleteAction="DereferenceRelated" owningBOHasForeignKey="false">
      <relatedProperty property="ForeignKeyID" relatedProperty="MappedForeignKeyID" />
    </relationship>
    <relationship name="ParentTable" type="single" relatedClass="DBTable" reverseRelationship="ForeignKeys" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="ParentTableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="RelatedTable" type="single" relatedClass="DBTable" reverseRelationship="RelatedForeignKeys" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="RelatedTableID" relatedProperty="TableID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Foreign Key Name" property="ForeignKeyName" />
        <column heading="Related Table" property="RelatedTableID" />
      </grid>
      <form>
        <field label="Foreign Key Name:" property="ForeignKeyName" />
        <field label="Related Table Info:" property="RelatedTableID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="DBForeignKeyColumn" assembly="FireStarter.DB.Schema.BO" displayName="DB Foreign Key Column">
    <property name="ForeignKeyColumnID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ForeignKeyID" type="Guid" />
    <property name="ParentColumnID" type="Guid">
      <businessObjectLookupList class="DBColumn" assembly="FireStarter.DB.Schema.BO" />
    </property>
    <property name="RelatedColumnID" type="Guid">
      <businessObjectLookupList class="DBColumn" assembly="FireStarter.DB.Schema.BO" />
    </property>
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <primaryKey>
      <prop name="ForeignKeyColumnID" />
    </primaryKey>
    <relationship name="ForeignKey" type="single" relatedClass="DBForeignKey" reverseRelationship="ForeignKeyColumns" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="ForeignKeyID" relatedProperty="ForeignKeyID" />
    </relationship>
    <relationship name="ParentColumn" type="single" relatedClass="DBColumn" reverseRelationship="ForeignKeyColumnsAsParentColumn" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="ParentColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="RelatedColumn" type="single" relatedClass="DBColumn" reverseRelationship="ForeignKeyColumnsAsRelatedColumn" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="RelatedColumnID" relatedProperty="ColumnID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Parent Column Info" property="ParentColumnID" />
        <column heading="Related Column Info" property="RelatedColumnID" />
      </grid>
      <form>
        <field label="Parent Column Info:" property="ParentColumnID" type="ComboBox" />
        <field label="Related Column Info:" property="RelatedColumnID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="DBKey" assembly="FireStarter.DB.Schema.BO" displayName="DB Key">
    <property name="KeyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="KeyName" />
    <property name="TableID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DBTable" assembly="FireStarter.DB.Schema.BO" />
    </property>
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <primaryKey>
      <prop name="KeyID" />
    </primaryKey>
    <relationship name="KeyColumns" type="multiple" relatedClass="DBKeyColumn" reverseRelationship="Key" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="KeyID" relatedProperty="KeyID" />
    </relationship>
    <relationship name="MappedDMUniqueConstraint" type="single" relatedClass="DMUniqueConstraint" reverseRelationship="MappedDBKey" relatedAssembly="FireStarterModeller.BO" deleteAction="DereferenceRelated" owningBOHasForeignKey="false">
      <relatedProperty property="KeyID" relatedProperty="MappedAlternateKeyID" />
    </relationship>
    <relationship name="Table" type="single" relatedClass="DBTable" reverseRelationship="Keys" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Key Name" property="KeyName" />
      </grid>
      <form>
        <field label="Key Name:" property="KeyName" />
      </form>
    </ui>
  </class>
  <class name="DBKeyColumn" assembly="FireStarter.DB.Schema.BO" displayName="DB Key Column">
    <property name="ColumnID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DBColumn" assembly="FireStarter.DB.Schema.BO" />
    </property>
    <property name="KeyID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DBKey" assembly="FireStarter.DB.Schema.BO" />
    </property>
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <primaryKey isObjectID="false">
      <prop name="ColumnID" />
      <prop name="KeyID" />
    </primaryKey>
    <relationship name="Column" type="single" relatedClass="DBColumn" reverseRelationship="KeyColumns" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="ColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="Key" type="single" relatedClass="DBKey" reverseRelationship="KeyColumns" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="KeyID" relatedProperty="KeyID" />
    </relationship>
  </class>
  <class name="DBPrimaryKey" assembly="FireStarter.DB.Schema.BO" displayName="DB Primary Key">
    <property name="PrimaryKeyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="TableID" type="Guid" compulsory="true"/>
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <primaryKey>
      <prop name="PrimaryKeyID" />
    </primaryKey>
    <relationship name="MappedDMObjectIdentity" type="single" relatedClass="DMObjectIdentity" reverseRelationship="MappedDBPrimaryKey" relatedAssembly="FireStarterModeller.BO" deleteAction="DereferenceRelated" owningBOHasForeignKey="false">
      <relatedProperty property="PrimaryKeyID" relatedProperty="MappedPrimaryKeyID" />
    </relationship>
    <relationship name="PrimaryKeyColumns" type="multiple" relatedClass="DBPrimaryKeyColumn" reverseRelationship="PrimaryKeyDB" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="PrimaryKeyID" relatedProperty="PrimaryKeyID" />
    </relationship>
    <relationship name="Table" type="single" relatedClass="DBTable" reverseRelationship="PrimaryKeyDB" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
  </class>
  <class name="DBPrimaryKeyColumn" assembly="FireStarter.DB.Schema.BO" displayName="DB Primary Key Column">
    <property name="PrimaryKeyID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DBPrimaryKey" assembly="FireStarter.DB.Schema.BO" />
    </property>
    <property name="ColumnID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DBColumn" assembly="FireStarter.DB.Schema.BO" />
    </property>
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <key name="AK1">
      <prop name="ColumnID" />
    </key>
    <primaryKey isObjectID="false">
      <prop name="ColumnID" />
      <prop name="PrimaryKeyID" />
    </primaryKey>
    <relationship name="Column" type="single" relatedClass="DBColumn" reverseRelationship="PrimaryKeyColumn" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="ColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="PrimaryKeyDB" type="single" relatedClass="DBPrimaryKey" reverseRelationship="PrimaryKeyColumns" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="PrimaryKeyID" relatedProperty="PrimaryKeyID" />
    </relationship>
  </class>
  <class name="DBTable" assembly="FireStarter.DB.Schema.BO" displayName="Table">
    <property name="DateCreated" type="DateTime" />
    <property name="Owner" description="The name of the user who owns the table"/>
    <property name="TableNameDB" compulsory="true" displayName="Table Name">
      <rule name="TableName">
        <add key="maxLength" value="255" />
        <add key="minLength" value="1" />
      </rule>
    </property>
    <property name="SchemaName" description="The Schema Name that the table is part of" />
    <property name="TableID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="TableID" />
    <property name="DatabaseID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="DatabaseID" />
    <property name="TableType" compulsory="true" readWriteRule="WriteOnce" />
    <property name="TableComment" />
    <property name="CreateTime" type="DateTime" />
    <property name="UpdateTime" type="DateTime" />
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <key name="AK1">
      <prop name="DatabaseID" />
      <prop name="TableNameDB" />
    </key>
    <primaryKey>
      <prop name="TableID" />
    </primaryKey>
    <relationship name="Columns" type="multiple" relatedClass="DBColumn" reverseRelationship="Table" relatedAssembly="FireStarter.DB.Schema.BO" keepReference="false" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="MappedDMClass" type="single" relatedClass="DMClass" reverseRelationship="MappedTable" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="TableID" relatedProperty="MappedTableID" />
    </relationship>
    <relationship name="ForeignKeys" type="multiple" relatedClass="DBForeignKey" reverseRelationship="ParentTable" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="TableID" relatedProperty="ParentTableID" />
    </relationship>
    <relationship name="Keys" type="multiple" relatedClass="DBKey" reverseRelationship="Table" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="PrimaryKeyDB" type="single" relatedClass="DBPrimaryKey" reverseRelationship="Table" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DeleteRelated" relationshipType="Aggregation" owningBOHasForeignKey="false">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="RelatedForeignKeys" type="multiple" relatedClass="DBForeignKey" reverseRelationship="RelatedTable" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DeleteRelated">
      <relatedProperty property="TableID" relatedProperty="RelatedTableID" />
    </relationship>
    <relationship name="Database" type="single" relatedClass="DBDatabase" reverseRelationship="Tables" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="DatabaseID" relatedProperty="DatabaseID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Table Name" property="TableName" />
        <column heading="Owner" property="Owner" />
        <column heading="Table Type" property="TableType" />
        <column heading="Table Comment" property="TableComment" />
        <column heading="Create Time" property="CreateTime" />
        <column heading="Date Created" property="DateCreated" />
        <column heading="Update Time" property="UpdateTime" />
        <column heading="Pending Change Type" property="PendingChangeType" />
      </grid>
      <form>
        <field label="Table Name:" property="TableName" />
        <field label="Owner:" property="Owner" />
        <field label="Table Type:" property="TableType" />
        <field label="Table Comment:" property="TableComment" />
        <field label="Create Time:" property="CreateTime" type="DateTimePicker" />
        <field label="Date Created:" property="DateCreated" type="DateTimePicker" />
        <field label="Update Time:" property="UpdateTime" type="DateTimePicker" />
        <field label="Pending Change Type:" property="PendingChangeType" />
      </form>
    </ui>
  </class>
  <class name="DBView" assembly="FireStarter.DB.Schema.BO" displayName="View">
    <property name="DateCreated" type="DateTime" />
    <property name="Owner" />
    <property name="TableName" compulsory="true" displayName="Table Name">
      <rule name="TableName">
        <add key="maxLength" value="255" />
        <add key="minLength" value="1" />
      </rule>
    </property>
    <property name="SchemaName" description="The Schema Name that the table is part of" />
    <property name="ViewID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="ViewID" />
    <property name="DatabaseID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="DatabaseID" />
    <property name="TableType" compulsory="true" readWriteRule="WriteOnce" />
    <property name="TableComment" />
    <property name="CreateTime" type="DateTime" />
    <property name="UpdateTime" type="DateTime" />
    <property name="PendingChangeType" type="FireStarter.Base.ChangeType" assembly="FireStarter.Base" default="None" />
    <property name="Approved" type="Boolean" default="true" />
    <key name="AK1">
      <prop name="DatabaseID" />
      <prop name="TableName" />
    </key>
    <primaryKey>
      <prop name="ViewID" />
    </primaryKey>
    <relationship name="Columns" type="multiple" relatedClass="DBViewColumn" reverseRelationship="View" relatedAssembly="FireStarter.DB.Schema.BO" keepReference="false" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="ViewID" relatedProperty="ViewID" />
    </relationship>
    <relationship name="MappedDMClass" type="single" relatedClass="DMClass" reverseRelationship="MappedView" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="ViewID" relatedProperty="MappedTableID" />
    </relationship>
    <relationship name="Database" type="single" relatedClass="DBDatabase" reverseRelationship="Views" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="DatabaseID" relatedProperty="DatabaseID" />
    </relationship>
  </class>
  <class name="DMAssembly" assembly="FireStarterModeller.BO" displayName="Module">
    <property name="AssemblyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Name" compulsory="true">
      <rule name="Name">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^[a-zA-Z]{1}([a-zA-Z0-9_.]+)$" />
      </rule>
    </property>
    <property name="SolutionID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Description" description="The full description of the Assembly.">
      <rule name="Description">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_ &amp;'`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <key name="AK1">
      <prop name="Name" />
      <prop name="SolutionID" />
    </key>
    <primaryKey>
      <prop name="AssemblyID" />
    </primaryKey>
    <relationship name="Classes" type="multiple" relatedClass="DMClass" reverseRelationship="Assembly" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation" orderBy="ClassNameBO ASC">
      <relatedProperty property="AssemblyID" relatedProperty="AssemblyID" />
    </relationship>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="Assemblies" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="Solution_DefaultAssembly" type="single" relatedClass="DMSolution" reverseRelationship="DefaultAssembly" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="AssemblyID" relatedProperty="DefaultAssemblyID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Name" property="Name" width="200" />
        <column heading="Description" property="Description" width="350" />
      </grid>
      <form width="500" height="200">
        <field label="Solution:" property="SolutionID" editable="false" />
        <field label="Name:" property="Name" />
        <field label="Description:" property="Description">
          <parameter name="numLines" value="4" />
        </field>
      </form>
    </ui>
  </class>
  <class name="DMClass" assembly="FireStarterModeller.BO" displayName="Class">
    <property name="ClassID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="BusinessObjectID" />
    <property name="ClassNameBO" compulsory="true" displayName="Entity Name" description="The name of the Business object e.g. Person, Organisation, Invoice">
      <rule name="BusinessObjectName">
        <add key="maxLength" value="100" />
        <add key="minLength" value="1" />
      </rule>
    </property>
    <property name="MappedTableName" compulsory="true" description="The Table Name of the Table that this class is mapped to" />
    <property name="MappedSchemaName" description="The Schema Name of the Table that this class is mapped to" />
    <property name="AssemblyID" type="Guid" compulsory="true" displayName="Module">
      <businessObjectLookupList class="DMAssembly" assembly="FireStarterModeller.BO" />
    </property>
    <property name="DisplayName" description="The human readable name that is used in error messages, documentation and help." />
    <property name="Generated" type="Boolean" default="false" description="Whether the DMClass has been generated before or not." />
    <property name="MappedTableID" type="Guid" displayName="Mapped Table Info" />
    <property name="ClassDescription" description="A full description of this Domain Class. This is used in documention and help files.">
      <rule name="ClassDescription">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp; '`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <property name="TypeParameter" />
    <property name="NeedsRegeneration" type="Boolean" default="true" description="Flag set when code is to be Regenerated."/>
    <property name="GenerateCode" type="Boolean" default="true" description="Flag set when code is to be generated."/>
    <key name="AK1">
      <prop name="ClassNameBO" />
    </key>
    <primaryKey>
      <prop name="ClassID" />
    </primaryKey>
    <relationship name="Assembly" type="single" relatedClass="DMAssembly" reverseRelationship="Classes" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="AssemblyID" relatedProperty="AssemblyID" />
    </relationship>
    <relationship name="DMLookupListBusinessObjects" type="multiple" relatedClass="DMLookupListBusinessObject" reverseRelationship="DMClass" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="MappedTable" type="single" relatedClass="DBTable" reverseRelationship="MappedDMClass" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="MappedTableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="MappedView" type="single" relatedClass="DBView" reverseRelationship="MappedDMClass" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="MappedTableID" relatedProperty="ViewID" />
    </relationship>
    <relationship name="ObjectIdentity" type="single" relatedClass="DMObjectIdentity" reverseRelationship="Class" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" owningBOHasForeignKey="false">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="Properties" type="multiple" relatedClass="DMProperty" reverseRelationship="Class" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition ASC">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="RelationshipsDM" type="multiple" relatedClass="DMRelationship" reverseRelationship="ClassDM" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation" orderBy="RelationshipName">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="SubClassRelationships" type="multiple" relatedClass="DMInheritanceRelationship" reverseRelationship="SuperClass" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ClassID" relatedProperty="SuperClassID" />
    </relationship>
    <relationship name="InheritanceSuperClassRelationship" type="single" relatedClass="DMInheritanceRelationship" reverseRelationship="SubClass" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="ClassID" relatedProperty="SubClassID" />
    </relationship>
    <relationship name="UIViews" type="multiple" relatedClass="UIView" reverseRelationship="Class" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="ViewName">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="UniqueConstraints" type="multiple" relatedClass="DMUniqueConstraint" reverseRelationship="Class" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <ui name="ComboLookup">
      <grid>
        <column heading="Class I D" property="ClassID" />
        <column heading="Class Name B O" property="ClassNameBO" />
      </grid>
    </ui>
    <ui>
      <grid>
        <column heading="Entity Name" property="ClassNameBO" width="200" />
      </grid>
      <form width="400" height="270">
        <field label="Assembly:" property="Assembly" type="ComboBox" mapperType="RelationshipComboBoxMapper" mapperAssembly="Habanero.Faces.Base" editable="false" />
        <field label="Class Name:" property="ClassNameBO" />
        <field label="Mapped Table Name:" property="MappedTableName" />
        <field label="Display Name:" property="DisplayName" />
        <field label="Generate Code?" property="GenerateCode" type="CheckBox" />
        <field label="Needs Regeneration?" property="NeedsRegeneration" type="CheckBox" />
        <field label="Description:" property="ClassDescription">
          <parameter name="numLines" value="2" />
        </field>
      </form>
    </ui>
  </class>
  <class name="DMInheritanceRelationship" assembly="FireStarterModeller.BO" displayName="DM Super Class">
    <property name="InheritanceRelationshipID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="InheritanceRelationshipID" />
    <property name="SuperClassID" type="Guid" compulsory="true" displayName="Super Class" description="The Unique Identifier for the Super Class mapped by this inheritance relationship">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" timeout="0" />
    </property>
    <property name="Identity" displayName="ID" description="The Sub Class's Property that relates the Sub Class to its Super Class via the SuperClass's ID Property" />
    <property name="Discriminator" description="The Discriminator is the Field/Property in the Super Class that is used to identify what sub type of Business Object is being stored." />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="InheritanceType" type="ORMapping" assembly="Habanero.Base" default="SingleTableInheritance" compulsory="true" displayName="OR Mapping" description="The Type of Inheritance Object Relational Mapping being used for this relationship">
      <simpleLookupList>
        <item display="ClassTableInheritance" value="ClassTableInheritance" />
        <item display="SingleTableInheritance" value="SingleTableInheritance" />
        <item display="ConcreteTableInheritance" value="ConcreteTableInheritance" />
      </simpleLookupList>
    </property>
    <property name="SubClassID" type="Guid" compulsory="true" displayName="Sub Class" description="The Unique Identifier for the Sub class mapped by this inheritance relationship" />
    <property name="IdentityPropertyID" type="Guid" displayName="Identity Property" description="The Sub Class's Property that relates the Sub Class to its Super Class via the SuperClass's ID Property" />
    <primaryKey>
      <prop name="InheritanceRelationshipID" />
    </primaryKey>
    <relationship name="IdentityProperty" type="single" relatedClass="DMProperty" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="IdentityPropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="SubClass" type="single" relatedClass="DMClass" reverseRelationship="InheritanceSuperClassRelationship" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SubClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="SuperClass" type="single" relatedClass="DMClass" reverseRelationship="SubClassRelationships" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SuperClassID" relatedProperty="ClassID" />
    </relationship>
    <ui>
      <form>
        <field label="Super Class:" property="SuperClassID" type="ComboBox" mapperType="SuperClassLookupComboBoxMapper" mapperAssembly="FireStarterModeller.UI" />
        <field label="OR Mapping:" property="InheritanceType" type="ComboBox" />
        <field label="Discriminator:" property="Discriminator" type="ComboBox" mapperType="CollectionComboBoxMapper" mapperAssembly="Habanero.Faces.Base" />
        <field label="ID:" property="IdentityPropertyID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="DMListItem" assembly="FireStarterModeller.BO" displayName="DM List Item">
    <property name="ListItemID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Value" compulsory="true" description="The Key value that is stored in the property for this lookup list item" />
    <property name="Display" compulsory="true" description="The Display value that is stored in the property for this lookup list item" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this item been generated before or is it new." />
    <property name="SimpleLookupListID" type="Guid" compulsory="true" description="The simple lookup list that this list is for" />
    <property name="Description" description="A full description of this Lookup List item. This is used primarily for documentation. I.e. the screen help and documentation for the Lookup Item will be based on this description ">
      <rule name="Description">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp;'`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <property name="OrdinalPosition" type="Int32" description="The order that this item is shown in the list of items. This is the default order that the list item will be displayed in a grid or form." />
    <primaryKey>
      <prop name="ListItemID" />
    </primaryKey>
    <relationship name="LookupListSimple" type="single" relatedClass="DMLookupListSimple" reverseRelationship="ListItems" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SimpleLookupListID" relatedProperty="SimpleLookupListID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Display" property="Display" />
        <column heading="Value" property="Value" />
      </grid>
    </ui>
  </class>
  <class name="DMLookupList" assembly="FireStarterModeller.BO" displayName="DM Lookup List">
    <property name="LookupListID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <primaryKey>
      <prop name="LookupListID" />
    </primaryKey>
    <relationship name="DMProperty" type="single" relatedClass="DMProperty" reverseRelationship="LookupList" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="LookupListID" relatedProperty="LookupListID" />
    </relationship>
  </class>
  <class name="DMLookupListBusinessObject" assembly="FireStarterModeller.BO" displayName="DM Business Object Lookup List">
    <superClass class="DMLookupList" assembly="FireStarterModeller.BO" />
    <property name="BusinessObjectLookupListID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ClassID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" timeout="0" />
    </property>
    <property name="AssemblyName" />
    <property name="Criteria" />
    <property name="ClassName" description="The name of the class this lookup list is looking up" />
    <property name="Timeout" type="Int32" default="10000" />
    <property name="DMSortOrderID" type="Guid" />
    <primaryKey>
      <prop name="BusinessObjectLookupListID" />
    </primaryKey>
    <relationship name="DMClass" type="single" relatedClass="DMClass" reverseRelationship="DMLookupListBusinessObjects" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="DMSortOrder" type="single" relatedClass="DMSortOrder" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="DMSortOrderID" relatedProperty="DMSortOrderID" />
    </relationship>
    <ui>
      <form>
        <field label="Class:" property="ClassID" type="ComboBox" />
        <field label="Sort Order:" property="DMSortOrder" type="ExtendedTextBoxWin" assembly="Habanero.Faces.Win" mapperType="SortPropertySelectorMapper" mapperAssembly="FireStarterModeller.UI" />
        <field label="Criteria:" property="Criteria">
          <parameter name="rowSpan" value="5" />
        </field>
      </form>
    </ui>
  </class>
  <class name="DMLookupListDatabase" assembly="FireStarterModeller.BO" displayName="DM Database Lookup List">
    <superClass class="DMLookupList" assembly="FireStarterModeller.BO" />
    <property name="DatabaseLookupListID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Sql" compulsory="true" />
    <property name="TimeOut" type="Decimal" default="10000" compulsory="true" />
    <property name="LookupClassName" compulsory="true" />
    <property name="Assembly" compulsory="true" />
    <property name="LimitToList" type="Boolean" default="true" compulsory="true" />
    <primaryKey>
      <prop name="DatabaseLookupListID" />
    </primaryKey>
  </class>
  <class name="DMLookupListSimple" assembly="FireStarterModeller.BO" displayName="Simple Lookup List">
    <superClass class="DMLookupList" assembly="FireStarterModeller.BO" />
    <property name="SimpleLookupListID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <primaryKey>
      <prop name="SimpleLookupListID" />
    </primaryKey>
    <relationship name="ListItems" type="multiple" relatedClass="DMListItem" reverseRelationship="LookupListSimple" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition">
      <relatedProperty property="SimpleLookupListID" relatedProperty="SimpleLookupListID" />
    </relationship>
  </class>
  <class name="DMObjectIdentity" assembly="FireStarterModeller.BO" displayName="DM Object Identity">
    <property name="ObjectIdentityID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ClassID" type="Guid" compulsory="true" />
    <property name="IsObjectID" type="Boolean" default="True" compulsory="true" />
    <property name="Generated" type="Boolean" default="false" compulsory="true" />
    <property name="MappedPrimaryKeyID" type="Guid" />
    <primaryKey>
      <prop name="ObjectIdentityID" />
    </primaryKey>
    <relationship name="Class" type="single" relatedClass="DMClass" reverseRelationship="ObjectIdentity" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="MappedDBPrimaryKey" type="single" relatedClass="DBPrimaryKey" reverseRelationship="MappedDMObjectIdentity" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="MappedPrimaryKeyID" relatedProperty="PrimaryKeyID" />
    </relationship>
    <relationship name="Properties" type="multiple" relatedClass="DMProperty" reverseRelationship="ObjectIdentity" relatedAssembly="FireStarterModeller.BO" deleteAction="DereferenceRelated">
      <relatedProperty property="ObjectIdentityID" relatedProperty="ObjectIdentityID" />
    </relationship>
  </class>
  <class name="DMProperty" assembly="FireStarterModeller.BO" displayName="DM Property">
    <property name="PropertyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="PropertyName" compulsory="true" description="The Unique name that identifies this property">
      <rule name="PropertyName">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
      </rule>
    </property>
    <property name="ReadWriteRule" type="PropReadWriteRule" assembly="Habanero.Base" default="ReadWrite" compulsory="true" description="The Rule controlling the ReadWrite Behaviour of this Property">
      <simpleLookupList>
        <item display="ReadOnly" value="ReadOnly" />
        <item display="ReadWrite" value="ReadWrite" />
        <item display="WriteNew" value="WriteNew" />
        <item display="WriteNotNew" value="WriteNotNew" />
        <item display="WriteOnce" value="WriteOnce" />
      </simpleLookupList>
    </property>
    <property name="MappedDBColumnName" displayName="DB Column Name" description="The Name of the DBColumn that this Property is mapped to." />
    <property name="Description" description="A full description of this DMProperty. This is used both for documentaiton as well as for generating the default tooltip text  used for this property.">
      <rule name="Description">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp; '`.,)(/ %*?;#!@]+)$" />
      </rule>
    </property>
    <property name="Compulsory" type="Boolean" default="False" description="Is this property compulsory or not. If the property is compulsory then the Business Object cannot be saved unless the value for this is set." />
    <property name="AutoIncrementing" type="Boolean" default="False" description="The property is mapped to an autoincrementing field in the database." />
    <property name="Length" type="Int32" />
    <property name="KeepValuePrivate" type="Boolean" default="False" description="Must the value be kept private i.e. if an error message is raised then the actual value stored in this property will not be shown to the user." />
    <property name="DisplayName" description="The display name this is the human friendly name that will be used as the default display name in user interfaces and error messages" />
    <property name="DefaultValue" description="The default value for this property. This is the value that the property will be set to when the object is created." />
    <property name="ClassID" type="Guid" compulsory="true" description="The Domain model Class that this Property is for." />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this property been previously generated or not" />
    <property name="ObjectIdentityID" type="Guid" displayName="ObjectIdentityID" description="Is this property the Objects Identity Property. The Objects Identity property is typically a Guid that is not mutable i.e. it can never be modified after it is set the first time." />
    <property name="LookupListID" type="Guid" description="The lookup list that is used as a set of options that can be used as the value of this property" />
    <property name="PropertyTypeID" type="Guid" compulsory="true" displayName="Property Type" description="The type of property for this property e.g. String, Decimal">
      <businessObjectLookupList class="DMPropertyType" assembly="FireStarterModeller.BO" timeout="0" />
    </property>
    <property name="MappedDBColumnID" type="Guid" displayName="MappedDBColumnID" description="The Database Column that this property is mapped to." />
    <property name="OrdinalPosition" type="Int32" compulsory="true" description="The order that this property is shown in the list of properties. This is the default order that the property will be displayed in a grid or form." />
    <property name="DefaultPropRuleID" type="Guid" description="This is the simple property rule that is used for the property this rule is used for limiting string lengths pattern matches etc" />
    <property name="GenerateCode" type="Boolean" default="true" description="Flag set when code is to be generated." />
    <key name="AK1">
      <prop name="ClassID" />
      <prop name="PropertyName" />
    </key>
    <primaryKey>
      <prop name="PropertyID" />
    </primaryKey>
    <relationship name="Class" type="single" relatedClass="DMClass" reverseRelationship="Properties" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="DefaultPropRule" type="single" relatedClass="DMPropRule" reverseRelationship="DMProperty" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="DefaultPropRuleID" relatedProperty="PropRuleID" />
    </relationship>
    <relationship name="DMUniqueConstraintProperties" type="multiple" relatedClass="DMUniqueConstraintProperty" reverseRelationship="Property" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="LookupList" type="single" relatedClass="DMLookupList" reverseRelationship="DMProperty" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="LookupListID" relatedProperty="LookupListID" />
    </relationship>
    <relationship name="MappedDBColumn" type="single" relatedClass="DBColumn" reverseRelationship="MappedDMProperty" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="MappedDBColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="MappedDBViewColumn" type="single" relatedClass="DBViewColumn" reverseRelationship="MappedDMProperty" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="MappedDBColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="ObjectIdentity" type="single" relatedClass="DMObjectIdentity" reverseRelationship="Properties" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="ObjectIdentityID" relatedProperty="ObjectIdentityID" />
    </relationship>
    <relationship name="PropertyType" type="single" relatedClass="DMPropertyType" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="PropertyTypeID" relatedProperty="PropertyTypeID" />
    </relationship>
    <relationship name="RelationshipProperties" type="multiple" relatedClass="DMRelationshipProperty" reverseRelationship="Property" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="UIProps" type="multiple" relatedClass="UIProp" reverseRelationship="Property" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" >
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <ui name="ComboLookup">
      <grid>
        <column heading="Property I D" property="PropertyID" />
        <column heading="Property Name" property="PropertyName" />
      </grid>
    </ui>
    <ui name="SortOrderComboLookup">
      <grid>
        <column heading="Property ID" property="PropertyID" />
        <column heading="Property Name" property="-SortOrderPropertyName-" />
      </grid>
    </ui>
    <ui>
      <grid>
        <column heading="Property Name" property="PropertyName" width="250" />
        <column heading="PK" property="-IsPartOfObjectIdentity-" type="DataGridViewCheckBoxColumn" editable="false" width="30" />
        <column heading="Order" property="OrdinalPosition" width="0" />
      </grid>
      <form height="275">
        <field label="Property Name:" property="PropertyName" />
        <field label="DB Column Name:" property="MappedDBColumnName" />
        <field label="Display Name:" property="DisplayName" />
        <field label="Property Type:" property="PropertyTypeID" type="ExtendedComboBoxWin" assembly="Habanero.Faces.Win" mapperType="PropertyTypeMapper" mapperAssembly="FireStarterModeller.UI" />
        <field label="Generate Code?" property="GenerateCode" type="CheckBox" />
        <field label="Description:" property="Description">
          <parameter name="numLines" value="2" />
        </field>
      </form>
    </ui>
    <ui name="ExtendedProps">
      <form>
        <field label="Read Write Rule:" property="ReadWriteRule" type="ComboBox" mapperType="EnumComboBoxMapper" mapperAssembly="Habanero.Faces.Base" />
        <field label="Keep Value Private?" property="KeepValuePrivate" type="CheckBox" />
        <field label="Compulsory?" property="Compulsory" type="CheckBox" />
        <field label="Default Value:" property="DefaultValue" />
        <field label="Auto Incrementing?" property="AutoIncrementing" type="CheckBox" />
      </form>
    </ui>
  </class>
  <class name="DMPropertyType" assembly="FireStarterModeller.BO" displayName="DM Property Type">
    <property name="PropertyTypeName" compulsory="true" />
    <property name="AssemblyName" compulsory="true" description="The assembly name for this Property Type e.g. System" />
    <property name="PropertyTypeID" type="Guid" readWriteRule="WriteNew" compulsory="true" description="The Guid Uniquely Identifying this Property Type" />
    <property name="SolutionID" type="Guid" displayName="SolutionID" description="The Solution that this PropertyType belongs to. Although many property types are generic e.g. String some will be specific to a solution.">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <key name="AK1">
      <prop name="AssemblyName" />
      <prop name="PropertyTypeName" />
      <prop name="SolutionID" />
    </key>
    <primaryKey>
      <prop name="PropertyTypeID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="PropertyTypes" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Assembly Name" property="AssemblyName" />
        <column heading="Property Type Name" property="PropertyTypeName" />
      </grid>
      <form>
        <field label="Assembly Name:" property="AssemblyName" />
        <field label="Property Type Name:" property="PropertyTypeName" />
      </form>
    </ui>
  </class>
  <class name="DMPropRule" assembly="FireStarterModeller.BO" displayName="DM Prop Rule">
    <property name="PropRuleID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="PropRuleID" />
    <property name="PropRuleName" compulsory="true" />
    <property name="Message" />
    <property name="Class" />
    <property name="Assembly" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <primaryKey>
      <prop name="PropRuleID" />
    </primaryKey>
    <relationship name="DMProperty" type="single" relatedClass="DMProperty" reverseRelationship="DefaultPropRule" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="PropRuleID" relatedProperty="DefaultPropRuleID" />
    </relationship>
    <relationship name="PropRuleParameters" type="multiple" relatedClass="DMPropRuleParameter" reverseRelationship="PropRule" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition ASC">
      <relatedProperty property="PropRuleID" relatedProperty="PropRuleID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Prop Rule Name" property="PropRuleName" />
      </grid>
      <form>
        <field label="Message:" property="Message" />
      </form>
    </ui>
  </class>
  <class name="DMPropRuleParameter" assembly="FireStarterModeller.BO" displayName="DM Prop Rule Parameter">
    <property name="PropRuleParameterID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="RuleID" type="Guid" />
    <property name="KeyName" compulsory="true" description="The key portion of the Parameter e.g. minLength" />
    <property name="Value" description="The value portion of the Prop Rule e.g. the value for min length." />
    <property name="PropRuleID" type="Guid" compulsory="true" description="The Property Rule that this Parameter is for." />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="OrdinalPosition" type="Int32" compulsory="true" description="The Ordinal Position that the Property is shown in in the property editor grid." />
    <primaryKey>
      <prop name="PropRuleParameterID" />
    </primaryKey>
    <relationship name="PropRule" type="single" relatedClass="DMPropRule" reverseRelationship="PropRuleParameters" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="PropRuleID" relatedProperty="PropRuleID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Key" property="KeyName" editable="false" width="130" />
        <column heading="Value" property="Value" />
      </grid>
      <form>
        <field label="Key:" property="KeyName" editable="false" />
        <field label="Value:" property="Value" />
      </form>
    </ui>
  </class>
  <class name="DMRelationship" assembly="FireStarterModeller.BO" displayName="DM Relationship">
    <property name="RelationshipID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="RelationshipID" />
    <property name="ClassID" type="Guid" displayName="Class" description="The Business Object that owns this relationship">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" />
    </property>
    <property name="ReverseRelationshipID" type="Guid" compulsory="true" description="The link to the reverse relationship that corresponds to this relationship" />
    <property name="RelationshipName" description="The unique name for this relationship">
      <rule name="RelationshipName">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^[a-zA-Z]{1}([a-zA-Z0-9_]+)$" />
      </rule>
    </property>
    <property name="RelationshipDescription" description="A description of the relationship and in the context of the business domain">
      <rule name="RelationshipDescription">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp; '`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <property name="Cardinality" type="FireStarterModeller.BO.Cardinality" assembly="FireStarterModeller.BO" default="Single" compulsory="true" description="The cardinality of the relationship i.e. Wether there can be many or only one related Business Object">
      <simpleLookupList>
        <item display="Single" value="Single" />
        <item display="Multiple" value="Multiple" />
      </simpleLookupList>
    </property>
    <property name="RelationshipType" type="RelationshipType" assembly="Habanero.Base" default="Association" description="What type of relationship exists between the Business Objects. i.e. Association, Aggregation or Composition.">
      <simpleLookupList>
        <item display="Association" value="Association" />
        <item display="Aggregation" value="Aggregation" />
        <item display="Composition" value="Composition" />
      </simpleLookupList>
    </property>
    <property name="DeleteAction" type="DeleteParentAction" assembly="Habanero.Base" default="Prevent" compulsory="true" description="What action must be undertaken when the Owning Business Object is deleted if there are related Business Objects. Delete Related - delete all related Objects when the parent is deleted, Dereference Related - Dereference all related business objects when the owning business object is deleted. Prevent Delete - Prevent the deletion of the Owning Business Object if there are any related Business Objects. Do Nothing - Let the DataStore or some other code sort it out.">
      <simpleLookupList>
        <item display="Delete Related" value="DeleteRelated" />
        <item display="Dereference Related" value="DereferenceRelated" />
        <item display="Prevent" value="Prevent" />
        <item display="Do Nothing" value="DoNothing" />
      </simpleLookupList>
    </property>
    <property name="InsertParentAction" type="InsertParentAction" assembly="Habanero.Base">
      <simpleLookupList>
        <item display="Do Nothing" value="DoNothing" />
        <item display="Insert Relationship" value="InsertRelationship" />
      </simpleLookupList>
    </property>
    <property name="Timeout" type="Int32" description="This is the time in milliseconds that this relationship collection will be cached (Not reloaded from the database)." />
    <property name="MappedForeignKeyID" type="Guid" description="What is the foreign key in the DB schema that this relationship has been created for." />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this class be been generated." />
    <property name="DMSortOrderID" type="Guid" />
    <property name="GenerateCode" type="Boolean" default="true" description="Flag set when code is to be generated." />
    <primaryKey>
      <prop name="RelationshipID" />
    </primaryKey>
    <relationship name="ClassDM" type="single" relatedClass="DMClass" reverseRelationship="RelationshipsDM" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="DMSortOrder" type="single" relatedClass="DMSortOrder" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="DMSortOrderID" relatedProperty="DMSortOrderID" />
    </relationship>
    <relationship name="MappedDBForeignKey" type="single" relatedClass="DBForeignKey" reverseRelationship="MappedDMRelationship" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="MappedForeignKeyID" relatedProperty="ForeignKeyID" />
    </relationship>
    <relationship name="RelationshipProperties" type="multiple" relatedClass="DMRelationshipProperty" reverseRelationship="Relationship" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="RelationshipID" relatedProperty="RelationshipID" />
    </relationship>
    <relationship name="ReverseRelationship" type="single" relatedClass="DMRelationship" reverseRelationship="ReverseRelationshipToMe" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="ReverseRelationshipID" relatedProperty="RelationshipID" />
    </relationship>
    <relationship name="ReverseRelationshipToMe" type="single" relatedClass="DMRelationship" reverseRelationship="ReverseRelationship" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="RelationshipID" relatedProperty="ReverseRelationshipID" />
    </relationship>
    <ui name="CreateNewStep1">
      <form>
        <field label="Related Class:" property="ReverseRelationship.ClassDM" type="ComboBox" mapperType="RelationshipComboBoxMapper" mapperAssembly="Habanero.Faces.Base" />
      </form>
    </ui>
    <ui name="CreateNewStep2">
      <form>
        <field label="Cardinality:" property="Cardinality" type="ComboBox" />
        <field label="Relationship Name:" property="RelationshipName" />
        <field label="Relationship Type:" property="RelationshipType" type="ComboBox" />
        <field label="Delete Action:" property="DeleteAction" type="ComboBox" />
        <field label="Insert Parent Action:" property="InsertParentAction" type="ComboBox" />
        <field label="Relationship Description:" property="RelationshipDescription">
          <parameter name="numLines" value="2" />
        </field>
      </form>
    </ui>
    <ui>
      <grid>
        <column heading="Related Class" property="ReverseRelationship.ClassID" type="DataGridViewComboBoxColumn" width="150" />
        <column heading="Relationship Name" property="RelationshipName" width="200" />
      </grid>
      <form height="345">
        <field label="Related Class:" property="ReverseRelationship.ClassDM" type="ComboBox" mapperType="RelationshipComboBoxMapper" mapperAssembly="Habanero.Faces.Base" />
        <field label="Relationship Name:" property="RelationshipName" />
        <field label="Relationship Type:" property="RelationshipType" type="ComboBox" />
        <field label="Cardinality:" property="Cardinality" type="ComboBox" />
        <field label="Delete Action:" property="DeleteAction" type="ComboBox" mapperType="EnumComboBoxMapper" mapperAssembly="Habanero.Faces.Base" />
        <field label="Insert Parent Action:" property="InsertParentAction" type="ComboBox" />
        <field label="Generate Code?" property="GenerateCode" type="CheckBox" />
        <field label="Relationship Description:" property="RelationshipDescription">
          <parameter name="numLines" value="2" />
        </field>
      </form>
    </ui>
    <ui name="Multiple">
      <form height="150">
        <field label="Order By:" property="DMSortOrder" type="ExtendedTextBoxWin" assembly="Habanero.Faces.Win" mapperType="SortPropertySelectorMapper" mapperAssembly="FireStarterModeller.UI" />
        <field label="Timeout:" property="Timeout" type="NumericUpDown" />
      </form>
    </ui>
    <ui name="Single"></ui>
  </class>
  <class name="DMRelationshipProperty" assembly="FireStarterModeller.BO" displayName="DM Relationship Property">
    <property name="RelationshipPropertyID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="Related Property" />
    <property name="RelationshipID" type="Guid" compulsory="true" description="The Relationship that owns this RelatedProperty">
      <businessObjectLookupList class="DMRelationship" assembly="FireStarterModeller.BO" />
    </property>
    <property name="PropertyID" type="Guid" compulsory="true" displayName="Owner Property" description="The Property of the Owning class for this Business Object that defines the properties that relate the Business Objects." />
    <property name="ReverseRelationshipPropertyID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="Related property" description="The Relationship Property of the reverse Relationship that corresponds to this Property" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this Realtionship Property been previously generated or not" />
    <key name="UniquePropertyForRelationship">
      <prop name="PropertyID" />
      <prop name="RelationshipID" />
    </key>
    <primaryKey>
      <prop name="RelationshipPropertyID" />
    </primaryKey>
    <relationship name="Property" type="single" relatedClass="DMProperty" reverseRelationship="RelationshipProperties" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="Relationship" type="single" relatedClass="DMRelationship" reverseRelationship="RelationshipProperties" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="RelationshipID" relatedProperty="RelationshipID" />
    </relationship>
    <relationship name="ReverseRelationshipProperty" type="single" relatedClass="DMRelationshipProperty" reverseRelationship="ReverseRelationshipPropertyToMe" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="ReverseRelationshipPropertyID" relatedProperty="RelationshipPropertyID" />
    </relationship>
    <relationship name="ReverseRelationshipPropertyToMe" type="single" relatedClass="DMRelationshipProperty" reverseRelationship="ReverseRelationshipProperty" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="RelationshipPropertyID" relatedProperty="ReverseRelationshipPropertyID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Property" property="PropertyID" type="DataGridViewComboBoxColumn" width="140" />
        <column heading="Related Property" property="ReverseRelationshipProperty.PropertyID" type="DataGridViewComboBoxColumn" width="140" />
      </grid>
      <form>
        <field label="Property Info:" property="PropertyID" type="ComboBox" />
        <field label="Related Property:" property="ReverseRelationshipProperty.PropertyID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="DMSolution" assembly="FireStarterModeller.BO" displayName="DM Solution">
    <property name="SolutionID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="SolutionID" />
    <property name="SolutionName" compulsory="true">
      <rule name="ProjectName">
        <add key="maxLength" value="100" />
        <add key="minLength" value="2" />
      </rule>
    </property>
    <property name="DefaultAssemblyID" type="Guid" compulsory="true" />
    <property name="HabaneroDllPath" />
    <property name="TableNamePrefix" />
    <property name="TableNameSuffix" />
    <property name="PascalCase" type="Boolean" default="True" />
    <property name="SolutionDirectory" />
    <property name="UIProjectName" />
    <property name="BOProjectName" />
    <property name="LogicProjectName" />
    <property name="BaseProjectName" />
    <property name="Generated" type="Boolean" default="False" />
    <property name="BOTestProjectName" />
    <property name="UITestProjectName" />
    <property name="SolutionDescription" description="A full description of the Solution" />
    <property name="BaseTestProjectName" />
    <key name="AK1">
      <prop name="SolutionName" />
    </key>
    <primaryKey>
      <prop name="SolutionID" />
    </primaryKey>
    <relationship name="Assemblies" type="multiple" relatedClass="DMAssembly" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation" orderBy="Name ASC">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="DefaultAssembly" type="single" relatedClass="DMAssembly" reverseRelationship="Solution_DefaultAssembly" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="DefaultAssemblyID" relatedProperty="AssemblyID" />
    </relationship>
    <relationship name="GenerationSettings" type="single" relatedClass="GenerationSettings" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="PropertyTypes" type="multiple" relatedClass="DMPropertyType" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="ReverseEngineering" type="single" relatedClass="ReverseEngineering" reverseRelationship="Solution" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DeleteRelated" owningBOHasForeignKey="false">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIControlMapperTypes" type="multiple" relatedClass="UIControlMapperType" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIControlTypes" type="multiple" relatedClass="UIControlType" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIFilterControlTypes" type="multiple" relatedClass="UITypeDefinition" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIGridColumnControlTypes" type="multiple" relatedClass="UIGridColumnControlType" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Solution Name" property="SolutionName" width="200" />
        <column heading="Solution Description" property="SolutionDescription" width="350" />
      </grid>
      <form width="500" height="200">
        <field label="Solution Name:" property="SolutionName" />
        <field label="Solution Description:" property="SolutionDescription">
          <parameter name="numLines" value="4" />
        </field>
      </form>
    </ui>
    <ui name="FireStarter">
      <grid>
        <column heading="Solution Name" property="SolutionName" />
      </grid>
      <form>
        <field label="Base Project Name:" property="BaseProjectName" />
        <field label="B O Project Name:" property="BOProjectName" />
        <field label="B O Test Project Name:" property="BOTestProjectName" />
        <field label="Default Assembly ID:" property="DefaultAssemblyID" />
        <field label="Generated?" property="Generated" type="CheckBox" />
        <field label="Habanero Dll Path:" property="HabaneroDllPath" />
        <field label="Logic Project Name:" property="LogicProjectName" />
        <field label="Pascal Case?" property="PascalCase" type="CheckBox" />
        <field label="Solution Description:" property="SolutionDescription" />
        <field label="Solution Directory:" property="SolutionDirectory" />
        <field label="Solution Name:" property="SolutionName" />
        <field label="Table Name Prefix:" property="TableNamePrefix" />
        <field label="Table Name Suffix:" property="TableNameSuffix" />
        <field label="U I Project Name:" property="UIProjectName" />
        <field label="U I Test Project Name:" property="UITestProjectName" />
      </form>
    </ui>
  </class>
  <class name="DMSortOrder" assembly="FireStarterModeller.BO" displayName="DM Sort Order">
    <property name="DMSortOrderID" type="Guid" compulsory="true" />
    <primaryKey>
      <prop name="DMSortOrderID" />
    </primaryKey>
    <relationship name="DMSortProperties" type="multiple" relatedClass="DMSortProperty" reverseRelationship="DMSortOrder" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="SortPosition">
      <relatedProperty property="DMSortOrderID" relatedProperty="DMSortOrderID" />
    </relationship>
  </class>
  <class name="DMSortProperty" assembly="FireStarterModeller.BO" displayName="DM Sort Property">
    <property name="DMSortPropertyID" type="Guid" compulsory="true" />
    <property name="DMSortOrderID" type="Guid" compulsory="true" />
    <property name="PropertyName" compulsory="true" />
    <property name="SortDirection" default="Ascending" compulsory="true">
      <simpleLookupList>
        <item display="Ascending" value="ASC" />
        <item display="Descending" value="DESC" />
      </simpleLookupList>
    </property>
    <property name="SortPosition" type="Int32" default="0" compulsory="true" />
    <key>
      <prop name="DMSortOrderID" />
      <prop name="PropertyName" />
    </key>
    <primaryKey>
      <prop name="DMSortPropertyID" />
    </primaryKey>
    <relationship name="DMSortOrder" type="single" relatedClass="DMSortOrder" reverseRelationship="DMSortProperties" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="DMSortOrderID" relatedProperty="DMSortOrderID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Property Name" property="-SortOrderPropertyName-" type="DataGridViewComboBoxColumn" width="200" />
        <column heading="Sort Direction" property="SortDirection" type="DataGridViewComboBoxColumn" width="150" />
      </grid>
    </ui>
  </class>
  <class name="DMUniqueConstraint" assembly="FireStarterModeller.BO" displayName="DM Unique Constraint">
    <property name="UniqueConstraintID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ClassID" type="Guid" compulsory="true" description="The class that this unique constraint is for">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Message" description="The message that should be displayed if this constraint test fails. If this is null then a standard message will be shown.">
      <rule name="Message">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp; '`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <property name="IgnoreIfNull" type="Boolean" default="True" compulsory="true" description="Ingore this unique constraint if one or more of the Properties that make it up are null" />
    <property name="UniqueConstraintName" compulsory="true" description="The name of the Unique Constraint" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this constraint ever been generated before" />
    <property name="MappedAlternateKeyID" type="Guid" description="What is the database alternate key that this unique constraint is mapped to." />
    <primaryKey>
      <prop name="UniqueConstraintID" />
    </primaryKey>
    <relationship name="Class" type="single" relatedClass="DMClass" reverseRelationship="UniqueConstraints" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="MappedDBKey" type="single" relatedClass="DBKey" reverseRelationship="MappedDMUniqueConstraint" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="MappedAlternateKeyID" relatedProperty="KeyID" />
    </relationship>
    <relationship name="UniqueConstraintProperties" type="multiple" relatedClass="DMUniqueConstraintProperty" reverseRelationship="UniqueConstraint" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="UniqueConstraintID" relatedProperty="UniqueConstraintID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Constraint Name" property="UniqueConstraintName" width="140" />
        <column heading="Message" property="Message" width="150" />
      </grid>
      <form>
        <field label="Constraint Name:" property="UniqueConstraintName" />
        <field label="Ignore If Null?" property="IgnoreIfNull" type="CheckBox" />
        <field label="Message:" property="Message">
          <parameter name="numLines" value="4" />
        </field>
      </form>
    </ui>
  </class>
  <class name="DMUniqueConstraintProperty" assembly="FireStarterModeller.BO" displayName="Unique Constraint Property">
    <property name="UniqueConstraintPropertyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="PropertyID" type="Guid" compulsory="true" displayName="Property" />
    <property name="UniqueConstraintID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DMUniqueConstraint" assembly="FireStarterModeller.BO" />
    </property>
    <key>
      <prop name="PropertyID" />
      <prop name="UniqueConstraintID" />
    </key>
    <primaryKey>
      <prop name="UniqueConstraintPropertyID" />
    </primaryKey>
    <relationship name="Property" type="single" relatedClass="DMProperty" reverseRelationship="DMUniqueConstraintProperties" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="UniqueConstraint" type="single" relatedClass="DMUniqueConstraint" reverseRelationship="UniqueConstraintProperties" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UniqueConstraintID" relatedProperty="UniqueConstraintID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Property" property="PropertyID" type="DataGridViewComboBoxColumn" width="330" />
      </grid>
      <form>
        <field label="Property:" property="PropertyID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="Entity" assembly="FireStarterModeller.BO" displayName="Entity">
    <property name="EntityID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="DMClassID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <primaryKey>
      <prop name="EntityID" />
    </primaryKey>
  </class>
  <class name="EntityAttribute" assembly="FireStarterModeller.BO" displayName="Entity Attribute">
    <property name="EntityAttributeID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="DMPropertyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="AttributeValue" />
    <primaryKey>
      <prop name="EntityAttributeID" />
    </primaryKey>
  </class>
  <class name="GenerationSettings" assembly="FireStarterModeller.BO" displayName="Generation Settings">
    <property name="GenerationSettingsID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="SolutionID" type="Guid" compulsory="true" displayName="Solution">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <property name="DatabaseConnectionID" type="Guid" displayName="Database Connection">
      <businessObjectLookupList class="DatabaseConnectionInfo" assembly="FireStarter.DB.Schema.BO" timeout="0" />
    </property>
    <property name="SolutionDirectory" />
    <property name="HabaneroDllPath" default="D:\Systems\Habanero\trunk\bin" />
    <property name="SolutionTypeID" type="Guid">
      <businessObjectLookupList class="SolutionType" assembly="FireStarterModeller.BO" timeout="0" />
    </property>
    <property name="CodeTemplateLibraryID" type="Guid">
      <businessObjectLookupList class="CodeTemplateLibrary" assembly="FireStarterModeller.BO" sort="CodeTemplateLibraryName" />
    </property>
    <property name="CodeTemplateLibraryName" type="CodeTemplateEnum" assembly="FireStarterModeller.BO" default="CSharpVisualStudio2008" />
    <primaryKey>
      <prop name="GenerationSettingsID" />
    </primaryKey>
    <relationship name="CodeTemplateLibrary" type="single" relatedClass="CodeTemplateLibrary" reverseRelationship="GenerationSettings" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="CodeTemplateLibraryID" relatedProperty="CodeTemplateLibraryID" />
    </relationship>
    <relationship name="DatabaseConnection" type="single" relatedClass="DatabaseConnectionInfo" relatedAssembly="FireStarter.DB.Schema.BO">
      <relatedProperty property="DatabaseConnectionID" relatedProperty="DatabaseConnectionID" />
    </relationship>
    <relationship name="ProjectTypeGenerations" type="multiple" relatedClass="ProjectTypeGeneration" reverseRelationship="GenerationSettings" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="GenerationSettingsID" relatedProperty="GenerationSettingsID" />
    </relationship>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="GenerationSettings" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="SolutionType" type="single" relatedClass="SolutionType" reverseRelationship="GenerationSettings" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SolutionTypeID" relatedProperty="SolutionTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Solution Name" property="Solution.SolutionName" />
        <column heading="Database Connection" property="DatabaseConnectionID" />
        <column heading="Solution Directory" property="SolutionDirectory" />
        <column heading="Habanero Dll Path" property="HabaneroDllPath" />
        <column heading="Solution Type I D" property="SolutionTypeID" />
        <column heading="Code Template Library" property="CodeTemplateLibraryName" />
      </grid>
      <form title="Edit Generation Settings">
        <field label="Solution Name:" property="Solution.SolutionName" />
        <field label="Database Connection:" property="DatabaseConnectionID" type="ExtendedComboBoxWin" assembly="Habanero.Faces.Win" mapperType="DBConnectionInfoMapper" mapperAssembly="FireStarterModeller.UI" />
        <field label="Solution Directory:" property="SolutionDirectory" type="DirectorySelectorControl" assembly="FireStarterModeller.UI" mapperType="DirectorySelectorMapper" mapperAssembly="FireStarterModeller.UI" />
        <field label="Habanero Dll Path:" property="HabaneroDllPath" type="DirectorySelectorControl" assembly="FireStarterModeller.UI" mapperType="DirectorySelectorMapper" mapperAssembly="FireStarterModeller.UI" />
        <field label="Solution Type:" property="SolutionTypeID" type="ComboBox" />
        <field label="Code Template Library:" property="CodeTemplateLibraryName" type="ComboBox" mapperType="EnumComboBoxMapper" mapperAssembly="Habanero.Faces.Base" />
      </form>
    </ui>
  </class>
  <class name="ModelModification" assembly="FireStarter.DB.Schema.BO" displayName="Model Modification">
    <property name="ModelModificationID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Description" />
    <property name="ReverseEngineeringID" type="Guid">
      <businessObjectLookupList class="ReverseEngineering" assembly="Firestarter.DB.Schema.BO" />
    </property>
    <property name="Approved" type="Boolean" default="true" />
    <primaryKey>
      <prop name="ModelModificationID" />
    </primaryKey>
    <relationship name="ReverseEngineering" type="single" relatedClass="ReverseEngineering" reverseRelationship="ModelModifications" relatedAssembly="Firestarter.DB.Schema.BO" deleteAction="DoNothing">
      <relatedProperty property="ReverseEngineeringID" relatedProperty="ReverseEngineeringID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Approved" property="Approved" width="80" />
        <column heading="Description" property="Description" editable="false" width="400" />
      </grid>
    </ui>
  </class>
  <class name="ProjectType" assembly="FireStarterModeller.BO" displayName="Project Type">
    <property name="ProjectTypeID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Name" compulsory="true" />
    <key name="Duplicate" message="There is another Project Type with the same name. Please Ensure that you have not captured this Project Type already.">
      <prop name="Name" />
    </key>
    <primaryKey>
      <prop name="ProjectTypeID" />
    </primaryKey>
    <relationship name="ProjectSolutionTypes" type="multiple" relatedClass="SolutionTypeProject" reverseRelationship="ProjectType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ProjectTypeID" relatedProperty="ProjectTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Name" property="Name" />
      </grid>
      <form title="Add/Edit Project Type">
        <field label="Name:" property="Name" />
      </form>
    </ui>
  </class>
  <class name="ProjectTypeGeneration" assembly="FireStarterModeller.BO" displayName="Project Type Generation">
    <property name="ProjectTypeGenerationID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="Project Type Generation" />
    <property name="GenerationSettingsID" type="Guid">
      <businessObjectLookupList class="GenerationSettings" assembly="FireStarterModeller.BO" />
    </property>
    <property name="ProjectTypeID" type="Guid" compulsory="true">
      <businessObjectLookupList class="ProjectType" assembly="FireStarterModeller.BO" />
    </property>
    <property name="ProjectName" />
    <property name="ToBeGenerated" type="Boolean" default="true" />
    <primaryKey>
      <prop name="ProjectTypeGenerationID" />
    </primaryKey>
    <relationship name="GenerationSettings" type="single" relatedClass="GenerationSettings" reverseRelationship="ProjectTypeGenerations" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="GenerationSettingsID" relatedProperty="GenerationSettingsID" />
    </relationship>
    <relationship name="ProjectType" type="single" relatedClass="ProjectType" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="ProjectTypeID" relatedProperty="ProjectTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Project Type" property="ProjectTypeID" editable="false" />
        <column heading="Project Name" property="ProjectName" width="200" />
        <column heading="To Be Generated" property="ToBeGenerated" type="DataGridViewCheckBoxColumn" />
      </grid>
      <form>
        <field label="Project Type:" property="ProjectTypeID" type="ComboBox" editable="false" />
        <field label="Project Name:" property="ProjectName" />
        <field label="To Be Generated?" property="ToBeGenerated" type="CheckBox" />
      </form>
    </ui>
  </class>
  <class name="ReverseEngineering" assembly="Firestarter.DB.Schema.BO" displayName="Reverse Engineering">
    <property name="ReverseEngineeringID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="DatabaseConnectionID" type="Guid" />
    <property name="StoredDatabaseID" type="Guid" />
    <property name="ReverseEngineeringSettingsID" type="Guid" />
    <property name="SolutionID" type="Guid">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <primaryKey>
      <prop name="ReverseEngineeringID" />
    </primaryKey>
    <relationship name="DatabaseConnectionInfo" type="single" relatedClass="DatabaseConnectionInfo" reverseRelationship="ReverseEngineeringsUsingThisConnection" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing" relationshipType="Aggregation">
      <relatedProperty property="DatabaseConnectionID" relatedProperty="DatabaseConnectionID" />
    </relationship>
    <relationship name="ModelModifications" type="multiple" relatedClass="ModelModification" reverseRelationship="ReverseEngineering" relatedAssembly="FireStarter.DB.Schema.BO" relationshipType="Aggregation">
      <relatedProperty property="ReverseEngineeringID" relatedProperty="ReverseEngineeringID" />
    </relationship>
    <relationship name="ReverseEngineeringSettings" type="single" relatedClass="ReverseEngineeringSettings" reverseRelationship="ReverseEngineering" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="ReverseEngineeringSettingsID" relatedProperty="ReverseEngineeringSettingsID" />
    </relationship>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="ReverseEngineering" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="StoredDatabase" type="single" relatedClass="DBDatabase" reverseRelationship="StoredByReverseEngineering" relatedAssembly="FireStarter.DB.Schema.BO" relationshipType="Aggregation">
      <relatedProperty property="StoredDatabaseID" relatedProperty="DatabaseID" />
    </relationship>
  </class>
  <class name="ReverseEngineeringSettings" assembly="FireStarter.DB.Schema.BO" displayName="Reverse Engineering Settings">
    <property name="ReverseEngineeringSettingsID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ImportTables" type="Boolean" default="True" description="Sets whether to Import tables from the Database or not"/>
    <property name="ImportViews" type="Boolean" description="Sets whether to Import views from the Database or not"/>
    <property name="TableNameFilter" description="You can apply a filter e.g. to only import tables that start with tb the filter for this would be 'tb%' or only to import tables ending with Security '%Security'"/>
    <property name="TableSchemaFilter" description="You can apply a filter to only import tables that belong to a certain schema in your database e.g. 'MasterData'"/>
    <property name="ViewNameFilter" description="You can apply a filter e.g. to only import Views that start with vw the filter for this would be 'vw%' or only to import views ending with Security '%Security'"/>
    <property name="ViewSchemaFilter" description="You can apply a filter to only import views that belong to a certain schema in your database e.g. 'MasterData'"/>
    <primaryKey>
      <prop name="ReverseEngineeringSettingsID" />
    </primaryKey>
    <relationship name="ReverseEngineering" type="single" relatedClass="ReverseEngineering" reverseRelationship="ReverseEngineeringSettings" relatedAssembly="FireStarter.DB.Schema.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="ReverseEngineeringSettingsID" relatedProperty="ReverseEngineeringSettingsID" />
    </relationship>
    <ui>
      <form>
        <field label="Import Tables?" property="ImportTables" type="CheckBox" />
        <field label="Import Views?" property="ImportViews" type="CheckBox" />
      </form>
    </ui>
  </class>
  <class name="SolutionType" assembly="FireStarterModeller.BO" displayName="Solution Type">
    <property name="SolutionTypeID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Name" compulsory="true" />
    <key name="Duplicate" message="There is another Solution Type with the same name. Please Ensure that you have not captured this Solution Type already.">
      <prop name="Name" />
    </key>
    <primaryKey>
      <prop name="SolutionTypeID" />
    </primaryKey>
    <relationship name="GenerationSettings" type="multiple" relatedClass="GenerationSettings" reverseRelationship="SolutionType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SolutionTypeID" relatedProperty="SolutionTypeID" />
    </relationship>
    <relationship name="SolutionTypeProjects" type="multiple" relatedClass="SolutionTypeProject" reverseRelationship="SolutionType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SolutionTypeID" relatedProperty="SolutionTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Name" property="Name" />
      </grid>
      <form title="Add/Edit Solution Type">
        <field label="Name:" property="Name" />
      </form>
    </ui>
  </class>
  <class name="SolutionTypeProject" assembly="FireStarterModeller.BO" displayName="Solution Type Project">
    <property name="SolutionTypeProjectID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="SolutionTypeID" type="Guid" compulsory="true">
      <businessObjectLookupList class="SolutionType" assembly="FireStarterModeller.BO" />
    </property>
    <property name="ProjectTypeID" type="Guid" compulsory="true">
      <businessObjectLookupList class="ProjectType" assembly="FireStarterModeller.BO" />
    </property>
    <primaryKey>
      <prop name="SolutionTypeProjectID" />
    </primaryKey>
    <relationship name="ProjectType" type="single" relatedClass="ProjectType" reverseRelationship="ProjectSolutionTypes" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="ProjectTypeID" relatedProperty="ProjectTypeID" />
    </relationship>
    <relationship name="SolutionType" type="single" relatedClass="SolutionType" reverseRelationship="SolutionTypeProjects" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SolutionTypeID" relatedProperty="SolutionTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Solution Type" property="SolutionTypeID" />
        <column heading="Project Type" property="ProjectTypeID" />
      </grid>
      <form>
        <field label="Solution Type:" property="SolutionTypeID" type="ComboBox" />
        <field label="Project Type:" property="ProjectTypeID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="TransactionLogEntry" assembly="FireStarterModeller.BO" table="transactionlogentry" displayName="Transaction Log Entry">
    <property name="TransactionSequenceNo" type="Int32" compulsory="true" autoIncrementing="true" />
    <property name="DateTimeUpdated" type="DateTime" />
    <property name="WindowsUser">
      <rule name="WindowsUser">
        <add key="maxLength" value="255" />
        <add key="minLength" value="0" />
      </rule>
    </property>
    <property name="LogonUser">
      <rule name="LogonUser">
        <add key="maxLength" value="255" />
        <add key="minLength" value="0" />
      </rule>
    </property>
    <property name="MachineName">
      <rule name="MachineName">
        <add key="maxLength" value="255" />
        <add key="minLength" value="0" />
      </rule>
    </property>
    <property name="BusinessObjectTypeName">
      <rule name="BusinessObjectTypeName">
        <add key="maxLength" value="255" />
        <add key="minLength" value="0" />
      </rule>
    </property>
    <property name="CRUDAction">
      <rule name="CRUDAction">
        <add key="maxLength" value="255" />
        <add key="minLength" value="0" />
      </rule>
    </property>
    <property name="DirtyXML" type="Habanero.Util.LongText" assembly="Habanero.Base" />
    <property name="BusinessObjectToString">
      <rule name="BusinessObjectToString">
        <add key="maxLength" value="255" />
        <add key="minLength" value="0" />
      </rule>
    </property>
    <primaryKey isObjectID="false">
      <prop name="TransactionSequenceNo" />
    </primaryKey>
  </class>
  <class name="TypeMapping" assembly="FireStarterModeller.BO" displayName="Type Mapping">
    <property name="TypeMappingID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="FromType" compulsory="true" />
    <property name="ToType" compulsory="true" />
    <primaryKey>
      <prop name="TypeMappingID" />
    </primaryKey>
  </class>
  <class name="UIColumnLayout" assembly="FireStarterModeller.BO" displayName="UI Column Layout">
    <property name="UIColumnLayoutID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Width" type="Int32" default="-1" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UITabID" type="Guid" compulsory="true" />
    <property name="OrdinalPosition" type="Int32" compulsory="true"/>
    <key name="AK1">
      <prop name="UITabID" />
      <prop name="OrdinalPosition" />
    </key>
    <primaryKey>
      <prop name="UIColumnLayoutID" />
    </primaryKey>
    <relationship name="UIFields" type="multiple" relatedClass="UIField" reverseRelationship="UIColumnLayout" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation" orderBy="OrdinalPosition ASC">
      <relatedProperty property="UIColumnLayoutID" relatedProperty="UIColumnLayoutID" />
    </relationship>
    <relationship name="UITab" type="single" relatedClass="UITab" reverseRelationship="UIColumnLayouts" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UITabID" relatedProperty="UITabID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Width" property="Width" />
      </grid>
      <form>
        <field label="Width:" property="Width" type="NumericUpDown" />
      </form>
    </ui>
  </class>
  <class name="UIControlMapperType" assembly="FireStarterModeller.BO" displayName="UI Control Mapper Type">
    <property name="UIControlMapperTypeID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="AssemblyName" />
    <property name="TypeName" />
    <property name="SolutionID" type="Guid" displayName="Project Info">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <key name="AK1">
      <prop name="AssemblyName" />
      <prop name="SolutionID" />
      <prop name="TypeName" />
    </key>
    <primaryKey>
      <prop name="UIControlMapperTypeID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="UIControlMapperTypes" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIFields" type="multiple" relatedClass="UIField" reverseRelationship="UIControlMapperType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIControlMapperTypeID" relatedProperty="UIControlMapperTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Assembly Name" property="AssemblyName" />
        <column heading="Type Name" property="TypeName" />
      </grid>
      <form>
        <field label="Assembly Name:" property="AssemblyName" />
        <field label="Type Name:" property="TypeName" />
        <field label="Project Info:" property="SolutionID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="UIControlType" assembly="FireStarterModeller.BO" displayName="UI Control Type">
    <property name="AssemblyName" compulsory="true" />
    <property name="TypeName" compulsory="true" />
    <property name="UIControlTypeID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="SolutionID" type="Guid" compulsory="true" displayName="Solution">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <key name="AK1">
      <prop name="AssemblyName" />
      <prop name="SolutionID" />
      <prop name="TypeName" />
    </key>
    <primaryKey>
      <prop name="UIControlTypeID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="UIControlTypes" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIFields" type="multiple" relatedClass="UIField" reverseRelationship="UIControlType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIControlTypeID" relatedProperty="UIControlTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Type Name" property="TypeName" />
        <column heading="Assembly Name" property="AssemblyName" />
      </grid>
      <form>
        <field label="Assembly Name:" property="AssemblyName" />
        <field label="Type Name:" property="TypeName" />
        <field label="Project Info:" property="SolutionID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="UIProp" assembly="FireStarterModeller.BO" displayName="UI Prop">
    <property name="UIPropID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Editable" type="Boolean" default="True" description="Indicates whether this property is editable or not. If this is set to true then standard ReadWrite rules and security rules will be used to determine if the property is editable." />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this column def being previously generated or not." />
    <property name="PropertyID" type="Guid"/>
    <property name="PropertyName" compulsory="true" displayName="Property Name" description="The name of the property to which this control will be linked" />
    <property name="OrdinalPosition" type="Int32" compulsory="true" description="The order that this UIProp is shown in the Grid/Form. This defaults to the OrdinalPosition of the DMProperty." />
    <property name="ToolTipText" description="The Tool tip text that will be shown for this UIProperty. If no Tool Tip Text is captured then it will default to the description from the associated Property" />
    <property name="UIPropType" description="The type of UIProp e.g. Form Field, FilterField, or Grid Column" />
    <primaryKey>
      <prop name="UIPropID" />
    </primaryKey>
    <relationship name="UIParameters" type="multiple" relatedClass="UIParameter" reverseRelationship="UIProp" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="UIPropID" relatedProperty="UIPropID" />
    </relationship>
    <relationship name="Property" type="single" relatedClass="DMProperty" reverseRelationship="UIProps" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
  </class>
  <class name="UIField" assembly="FireStarterModeller.BO" displayName="UI Field">
    <superClass class="UIProp" assembly="FireStarterModeller.BO" orMapping="SingleTableInheritance" discriminator="UIPropType"/>
    <property name="UIControlTypeID" type="Guid" compulsory="true" displayName="UI Control Type" description="The control type">
      <businessObjectLookupList class="UIControlType" assembly="FireStarterModeller.BO" />
    </property>
    <property name="UIControlMapperTypeID" type="Guid" displayName="UI Control Mapper Type" description="The mapper used to link the control to the business object property">
      <businessObjectLookupList class="UIControlMapperType" assembly="FireStarterModeller.BO" />
    </property>
    <property name="ShowAsCompulsory" type="Boolean" displayName="Show As Compulsory" description="Indicates whether the user is required to enter a value for this property" />
    <property name="UIColumnLayoutID" type="Guid" compulsory="true" displayName="UI Column Layout" description="The column of controls that this control is aligned to" />
    <property name="Layout" default="Label" compulsory="true" description="How the control is laid out (e.g. with a Label or inside a GroupBox)" />
    <property name="LabelText" displayName="Label Text" description="The label text that will appear next to the control" />
    <relationship name="UIColumnLayout" type="single" relatedClass="UIColumnLayout" reverseRelationship="UIFields" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIColumnLayoutID" relatedProperty="UIColumnLayoutID" />
    </relationship>
    <relationship name="UIControlMapperType" type="single" relatedClass="UIControlMapperType" reverseRelationship="UIFields" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIControlMapperTypeID" relatedProperty="UIControlMapperTypeID" />
    </relationship>
    <relationship name="UIControlType" type="single" relatedClass="UIControlType" reverseRelationship="UIFields" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIControlTypeID" relatedProperty="UIControlTypeID" />
    </relationship>
    <ui>
      <grid sortColumn="PropertyName">
        <column heading="Property Name" property="PropertyName" />
      </grid>
      <form>
        <field property="PropertyName" />
        <field property="LabelText" />
        <field property="Editable" type="CheckBox" />
        <field property="ToolTipText" />
        <field property="ShowAsCompulsory" type="CheckBox"  />
        <field property="UIControlTypeID" type="ExtendedComboBoxWin" assembly="Habanero.Faces.Win" mapperType="ExtendedComboBoxMapper" mapperAssembly="Habanero.Faces.Base" />
        <field property="UIControlMapperTypeID" type="ComboBox" />
        <field property="Layout" type="ComboBox" mapperType="ListComboBoxMapper">
          <parameter name="options" value="Label|GroupBox" />
        </field>
      </form>
    </ui>
  </class>
  <class name="UIFormInfo" assembly="FireStarterModeller.BO" displayName="UI Form">
    <property name="UIFormID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Width" type="Int32" default="300" compulsory="true" />
    <property name="Height" type="Int32" default="250" compulsory="true" />
    <property name="Title" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UIViewID" type="Guid" compulsory="true">
      <businessObjectLookupList class="UIView" assembly="FireStarterModeller.BO" />
    </property>
    <primaryKey>
      <prop name="UIFormID" />
    </primaryKey>
    <relationship name="UITabs" type="multiple" relatedClass="UITab" reverseRelationship="UIFormInfo" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition">
      <relatedProperty property="UIFormID" relatedProperty="UIFormID" />
    </relationship>
    <relationship name="UIView" type="single" relatedClass="UIView" reverseRelationship="UIFormInfo" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIViewID" relatedProperty="UIViewID" />
    </relationship>
    <ui>
      <form>
        <field property="Title" />
        <field property="Width" type="NumericUpDown" />
        <field property="Height" />
        <!--ERIC: put this into a new UI def if you need this, I assume it's leftovers from somewhere
        Needed to reformat it for use on the Add Element form.-->
        <!--<columnLayout width="250">
          <field label="Title:" property="Title" />
        </columnLayout>
        <columnLayout width="250">
          <field label="Width:" property="Width" type="NumericUpDown" />
        </columnLayout>
        <columnLayout width="250">
          <field label="Height:" property="Height" />
        </columnLayout>-->
      </form>
    </ui>
  </class>
  <class name="UIGridColumnControlType" assembly="FireStarterModeller.BO" displayName="UI Grid Column Control Type">
    <property name="UIGridColumnControlTypeID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="Control Type" />
    <property name="AssemblyName" compulsory="true" />
    <property name="TypeName" compulsory="true" />
    <property name="SolutionID" type="Guid" compulsory="true" displayName="SolutionID" />
    <key name="AK1">
      <prop name="AssemblyName" />
      <prop name="SolutionID" />
      <prop name="TypeName" />
    </key>
    <primaryKey>
      <prop name="UIGridColumnControlTypeID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="UIGridColumnControlTypes" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIColumns" type="multiple" relatedClass="UIGridColumnInfo" reverseRelationship="UIGridColumnControlType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIGridColumnControlTypeID" relatedProperty="UIGridColumnControlTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Type Name" property="TypeName" />
        <column heading="Assembly Name" property="AssemblyName" />
      </grid>
      <form>
        <field label="Assembly Name:" property="AssemblyName" />
        <field label="Type Name:" property="TypeName" />
        <field label="Project Info:" property="SolutionID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="UIGridColumnInfo" assembly="FireStarterModeller.BO" displayName="UI Grid Column">
    <superClass class="UIProp" assembly="FireStarterModeller.BO" orMapping="SingleTableInheritance" discriminator="UIPropType"/>
    <property name="UIGridColumnControlTypeID" type="Guid" compulsory="true" displayName="Grid Column Type" description="The column control type">
      <businessObjectLookupList class="UIGridColumnControlType" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Width" type="Int32" default="100" description="The minimum width this column will have in the grid" />
    <property name="Heading" description="The text heading that appears at the top of the column" />
    <property name="Alignment" default="left" description="The horizontal alignment of the column data">
      <simpleLookupList>
        <item display="centre" value="centre" />
        <item display="left" value="left" />
        <item display="right" value="right" />
      </simpleLookupList>
    </property>
    <property name="UIGridID" displayName="UI Grid" type="Guid" compulsory="true" description="The grid definition to which this column definition belongs" />
    <relationship name="UIGrid" type="single" relatedClass="UIGridInfo" reverseRelationship="UIColumns" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIGridID" relatedProperty="UIGridID" />
    </relationship>
    <relationship name="UIGridColumnControlType" type="single" relatedClass="UIGridColumnControlType" reverseRelationship="UIColumns" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIGridColumnControlTypeID" relatedProperty="UIGridColumnControlTypeID" />
    </relationship>
    <ui>
      <grid>
        <column property="PropertyName" />
      </grid>
      <form>
        <field property="PropertyName" />
        <field property="Heading" />
        <field property="UIGridColumnControlTypeID" type="ExtendedComboBoxWin" assembly="Habanero.Faces.Win" mapperType="ExtendedComboBoxMapper" mapperAssembly="Habanero.Faces.Base" />
        <field property="Editable" type="CheckBox" />
        <field property="Width" />
        <field property="Alignment" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="UIGridFilter" assembly="FireStarterModeller.BO" displayName="UI Grid Filter">
    <property name="UIGridFilterID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="UIGridID" type="Guid" compulsory="true" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="FilterMode" type="FilterModes" assembly="Habanero.Base" default="Search" compulsory="true" description="The FilterMode that this Filter Control will use i.e. Search or Filter.">
      <simpleLookupList>
        <item display="Search" value="Search" />
        <item display="Filter" value="Filter" />
      </simpleLookupList>
    </property>
    <property name="Columns" type="Int32" default="0" />
    <primaryKey>
      <prop name="UIGridFilterID" />
    </primaryKey>
    <relationship name="UIGridFilterProps" type="multiple" relatedClass="UIGridFilterProp" reverseRelationship="UIGridFilter" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition ASC">
      <relatedProperty property="UIGridFilterID" relatedProperty="UIGridFilterID" />
    </relationship>
    <relationship name="UIGridInfo" type="single" relatedClass="UIGridInfo" reverseRelationship="UIGridFilter" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIGridID" relatedProperty="UIGridID" />
    </relationship>
    <ui>
      <form>
        <field property="FilterMode" type="ComboBox" />
        <field property="Columns" type="NumericUpDown" />
      </form>
    </ui>
  </class>
  <class name="UIGridFilterProp" assembly="FireStarterModeller.BO" displayName="UI Grid Filter Prop">
    <superClass class="UIProp" assembly="FireStarterModeller.BO" orMapping="SingleTableInheritance" discriminator="UIPropType"/>
    <property name="UIGridFilterID" type="Guid" compulsory="true" description="The parent filter for this property" />
    <property name="FilterControlTypeID" type="Guid" compulsory="true" description="The type of filter control to use for this property (e.g. StringTextBoxFilter)">
      <!--<simpleLookupList>
        <item display="Boolean Filter CheckBox" value="BooleanFilterCheckBox" />
        <item display="Date Filter DateTimePicker" value="DateFilterDateTimePicker" />
        <item display="Date Range Filter ComboBox" value="DateRangeFilterComboBox" />
        <item display="String Filter ComboBox" value="StringFilterComboBox" />
        <item display="String Filter TextBox" value="StringFilterTextBox" />
        <item display="Boolean Filter ComboBox" value="BooleanFilterComboBox" />
      </simpleLookupList>-->
    </property>
    <property name="DefaultValue" description="The default value that will be selected in the control if the user does not choose something else" />
    <property name="Nullable" type="Boolean" description="Indicates whether the user can leave a null (blank) value in the control" />
    <property name="FilterClauseOp" type="FilterClauseOperator" assembly="Habanero.Base" displayName="Filter Clause Operator" description="The comparison operator that determines how values are filtered (e.g. OpLike looks for partial matches within a string)">
      <simpleLookupList>
        <item display="=" value="OpEquals" />
        <item display="Like" value="OpLike" />
        <item display="&gt;=" value="OpGreaterThanOrEqualTo" />
        <item display="&lt;=" value="OpLessThanOrEqualTo" />
        <item display="&gt;" value="OpGreaterThan" />
        <item display="&lt;" value="OpLessThan" />
      </simpleLookupList>
    </property>
    <property name="LabelText" displayName="Label Text" description="The label text that will appear next to the control" />
    <key name="AK1">
      <prop name="UIGridFilterID" />
    </key>
    <relationship name="UIGridFilter" type="single" relatedClass="UIGridFilter" reverseRelationship="UIGridFilterProps" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIGridFilterID" relatedProperty="UIGridFilterID" />
    </relationship>
    <relationship name="UIGridFilterType" type="single" relatedClass="UITypeDefinition" reverseRelationship="UIGridFilterProps" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="FilterControlTypeID" relatedProperty="UITypeDefinitionID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Property Name" property="PropertyName" />
      </grid>
      <form>
        <field label="Property:" property="PropertyName" />
        <field label="Label Text:" property="LabelText" />
        <field label="Filter Control Type:" property="FilterControlTypeID" type="ComboBox" />
        <field label="Filter Clause Op:" property="FilterClauseOp" type="ComboBox" />
        <field label="Default Value:" property="DefaultValue" />
        <field label="Nullable?" property="Nullable" type="CheckBox" />
      </form>
    </ui>
  </class>
  <class name="UIGridInfo" assembly="FireStarterModeller.BO" displayName="UI Grid">
    <property name="UIGridID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="SortColumn" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UIViewID" type="Guid" compulsory="true">
      <businessObjectLookupList class="UIView" assembly="FireStarterModeller.BO" />
    </property>
    <primaryKey>
      <prop name="UIGridID" />
    </primaryKey>
    <relationship name="UIColumns" type="multiple" relatedClass="UIGridColumnInfo" reverseRelationship="UIGrid" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition ASC">
      <relatedProperty property="UIGridID" relatedProperty="UIGridID" />
    </relationship>
    <relationship name="UIGridFilter" type="single" relatedClass="UIGridFilter" reverseRelationship="UIGridInfo" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" owningBOHasForeignKey="false">
      <relatedProperty property="UIGridID" relatedProperty="UIGridID" />
    </relationship>
    <relationship name="UIView" type="single" relatedClass="UIView" reverseRelationship="UIGridInfo" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIViewID" relatedProperty="UIViewID" />
    </relationship>
    <ui>
      <form>
        <field property="SortColumn" />
      </form>
    </ui>
  </class>
  <class name="UIParameter" assembly="FireStarterModeller.BO" displayName="UI Parameter">
  <property name="UIParameterID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
  <property name="Name" compulsory="true" description="The type of parameter you are adding, such as decimalPlaces, rowSpan, etc.  Consult the documentation for a list of available parameters.  Also note that this is an open-ended format and can be used for your own custom purpose." />
  <property name="Value" compulsory="true" description="The value for the given name.  Consult the documentation for valid values per the parameter specified under 'name'." />
  <property name="Generated" type="Boolean" default="False" compulsory="true" />
  <property name="UIPropID" type="Guid" />
  <primaryKey>
    <prop name="UIParameterID" />
  </primaryKey>
  <relationship name="UIProp" type="single" relatedClass="UIProp" reverseRelationship="UIParameters" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
    <relatedProperty property="UIPropID" relatedProperty="UIPropID" />
  </relationship>
  <ui>
    <grid>
      <column heading="Name" property="Name" />
    </grid>
    <form>
      <field label="Name:" property="Name" />
      <field label="Value:" property="Value" />
    </form>
  </ui>
  </class>
  <class name="UITab" assembly="FireStarterModeller.BO" displayName="UI Tab">
    <property name="UITabID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Name" compulsory="true" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UIFormID" type="Guid" compulsory="true" />
    <property name="OrdinalPosition" type="Int32" compulsory="true"/>
    <key name="UC1">
      <prop name="UIFormID" />
      <prop name="OrdinalPosition" />
    </key>
    <primaryKey>
      <prop name="UITabID" />
    </primaryKey>
    <relationship name="UIColumnLayouts" type="multiple" relatedClass="UIColumnLayout" reverseRelationship="UITab" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition">
      <relatedProperty property="UITabID" relatedProperty="UITabID" />
    </relationship>
    <relationship name="UIFormInfo" type="single" relatedClass="UIFormInfo" reverseRelationship="UITabs" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIFormID" relatedProperty="UIFormID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Name" property="Name" />
      </grid>
      <form>
        <field label="Name:" property="Name" />
      </form>
    </ui>
  </class>
  <class name="UITypeDefinition" assembly="FireStarterModeller.BO" displayName="U I Type Definition">
    <property name="UITypeDefinitionID" type="Guid" readWriteRule="WriteNew" compulsory="true" description="The Unique Object IDentifier" />
    <property name="AssemblyName" compulsory="true" description="The assembly where this Type Definition is to be loaded from e.g. System.Windows.Forms" />
    <property name="TypeName" compulsory="true" description="The TypeName that this UITypeDefintion is for e.g. TextBox" />
    <property name="SolutionID" type="Guid" compulsory="true" displayName="Solution" description="The Solution that this UITypeDefinition is associated with." />
    <property name="TypeDescriminator" description="This is the Discriminor used for Single Table Inheritance. This Discriminaotor is used to identify the actual sub type of this Type Definition." />
    <key name="UC1">
      <prop name="AssemblyName" />
      <prop name="SolutionID" />
      <prop name="TypeDescriminator" />
      <prop name="TypeName" />
    </key>
    <primaryKey>
      <prop name="UITypeDefinitionID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="UIFilterControlTypes" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIGridFilterProps" type="multiple" relatedClass="UIGridFilterProp" reverseRelationship="UIGridFilterType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UITypeDefinitionID" relatedProperty="FilterControlTypeID" />
    </relationship>
  </class>
  <class name="UIView" assembly="FireStarterModeller.BO" displayName="UI View">
    <property name="UIViewID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ViewName" default="default" compulsory="true" description="The name that the UI is given this is used by the form or control that this form is built onto so that the appropriate form can be built" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="ClassID" type="Guid" compulsory="true" displayName="Business Object Info">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" />
    </property>
    <primaryKey>
      <prop name="UIViewID" />
    </primaryKey>
    <relationship name="Class" type="single" relatedClass="DMClass" reverseRelationship="UIViews" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="UIFormInfo" type="single" relatedClass="UIFormInfo" reverseRelationship="UIView" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation" owningBOHasForeignKey="false">
      <relatedProperty property="UIViewID" relatedProperty="UIViewID" />
    </relationship>
    <relationship name="UIGridInfo" type="single" relatedClass="UIGridInfo" reverseRelationship="UIView" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" owningBOHasForeignKey="false">
      <relatedProperty property="UIViewID" relatedProperty="UIViewID" />
    </relationship>
    <ui>
      <grid>
        <column heading="View Name" property="ViewName" />
      </grid>
      <form>
        <field label="View Name:" property="ViewName" />
      </form>
    </ui>
  </class>
</classes>